#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

#include <semaforoI.h>

#define MAX_TIME_ESCRIBIR 5

void escritor ();
void escribir ();

int main (int argc, char *argv[]) {
  escritor(argv[1]);

  return 0;
}

void escritor (char *id_sem_acceso) {
  srand((int)getpid());

  // Obtiene el puntero al semáforo 
  // para el acceso a la sección crítica.
  sem_t *sem_acceso = get_sem(id_sem_acceso);  

  while (1) {
    wait_sem(sem_acceso);
    // Sección crítica para el escritor.
    escribir();
    // Fin sección crítica.
    signal_sem(sem_acceso);
  }
}

void escribir () {
  printf("%d escribiendo...\n", getpid());
  sleep(rand() % MAX_TIME_ESCRIBIR);
}
